Generating intelligent contact routing configurations

ABSTRACT

One or more embodiments described herein provide benefits and solve one or more of the foregoing or other problems in the art with systems, methods, and non-transitory computer readable media that provide an interface within a customer-relationship management system (CRM system) that a user can access to setup routing (e.g., call routing) within a communication management system (e.g., contact center) using data within the CRM system. For example, in one or more embodiments, the system provides an interface within a CRM system that allows a user to select a routing option for a contact (e.g., phone number) based on a specified CRM data object by allowing a data dip into the CRM database. The system then provides the CRM data and the selected routing option to the communications management system where the communications management system updates a routing state machine and activates the selected routing option for the contact.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application Ser.No. 62/850,870 filed on May 21, 2019. The contents of which are herebyincorporated by reference.

BACKGROUND

Modern companies and organizations use a variety of technologies tomanage and organize contact with customers, employees, and members. Forexample, a company may use a contact center as a primary touch point forcustomers to reach out to the company with a variety of requests andneeds (e.g., customer support, product information, etc.). In addition,the same company may also use a customer-relationship management system(or CRM system) to maintain and organize the company's interaction withcurrent and potential customers. While modern CRM systems can receiveand use data from a contact center, often there is a disconnect betweenthe two systems that complicates or prevents the use of data from theCRM system to perform actions in the contact center.

One example of this disconnect is contact routing (e.g., call routing)within a contact center. While many contact centers offer variousoptions to set up contact routing within the contact center itself, theprocess of setting contact routing within a contact center can be timeconsuming because the proper routing often depends on data within thecompany's CRM system. In the past, many attempts have been made tointegrate CRM data into a contact center routing. However, typically,setting up contact center routing integrated with CRM data is a timeconsuming process that takes weeks and months of engineering time andlarge amounts of resources. Moreover, the end solution is ofteninflexible, difficult to navigate, and requires significant training andexpertise to successfully use. Moreover, the result is often a separateapplication that does not easily achieve contact routing in a simple waythat an agent, call center supervisor, or administrator can do on theirown. Thus, there are several disadvantages with regard to conventionalcommunication management systems.

SUMMARY

One or more embodiments described herein provide benefits and solve oneor more of the foregoing or other problems in the art with systems,methods, and non-transitory computer readable media that provide aninterface within a customer-relationship management system (CRM system)that a user can access to setup routing (e.g., call routing) within acommunication management system (e.g., contact center) using data withinthe CRM system. For example, in one or more embodiments, the systemprovides an interface within a CRM system that allows a user to select arouting option for a contact (e.g., phone number) based on a specifiedCRM data object by allowing a data dip into the CRM database. The systemthen provides the CRM data and the selected routing option to thecommunication management system where the communication managementsystem updates a routing state machine and activates the selectedrouting option for the contact.

Additional features and advantages of the present application will beset forth in the description which follows, and in part will be obviousfrom the description, or may be learned by the practice of such exampleembodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

This disclosure will describe one or more embodiments of the inventionwith additional specificity and detail by referencing the accompanyingfigures. The following paragraphs briefly describe those figures, inwhich:

FIG. 1 illustrates an example routing system in accordance with one ormore embodiments;

FIG. 2 illustrates additional details of a routing system in accordancewith one or more embodiments;

FIGS. 3A-3F illustrate example graphical user interfaces that therouting system provides within a CRM interface to setup call routing ina communication management system in accordance with one or moreembodiments;

FIGS. 4A-4E illustrate example graphical user interfaces that therouting system provides within a CRM interface to setup call routing ina communication management system in accordance with one or moreembodiments;

FIG. 5 illustrates an example sequence flow for setting a new routingwithin the routing system;

FIG. 6 illustrates an example sequence flow for editing a routing withinthe routing system;

FIG. 7 illustrates and example sequence flow to publish to a statemachine in accordance within one or more embodiments;

FIG. 8 illustrates example draft flow options in accordance with one ormore embodiments;

FIG. 9 illustrates synchronizing draft flows with a state machine inaccordance with one or more embodiments;

FIG. 10 illustrates an example method for updating a routing statemachine and for routing a communication using the routing state machine;

FIG. 11 illustrates an example method for receiving a communication andfor routing the communication using the routing state machine;

FIG. 12 is an illustration of an example method for generating a routingdata package;

FIG. 13 is an illustration of an example computing device.

DETAILED DESCRIPTION

One or more embodiments described herein provide benefits and solve oneor more of the foregoing or other problems in the art with systems,methods, and non-transitory computer readable media that provide anintelligent routing interface within a customer-relationship managementsystem (CRM system) that a user can access to setup routing (e.g., callrouting) within a communication management system (e.g., a contactcenter) using data within the CRM system. For example, in one or moreembodiments, a routing system provides an intelligent routing interfacewithin a CRM system that allows a user to select a routing option for acontacting user (e.g., phone number) based on a specified CRM dataobject by allowing a data dip into the CRM database. The routing systemthen provides the CRM data and the selected routing option to thecommunication management system to update a routing state machine withinthe communication management system and activate the selected routingoption for the contact.

In some embodiments, for example, the routing system provides anintelligent routing interface within a CRM system to allow a user toeasily set a routing flow for a specified contacting user. For instance,the intelligent routing interface can provide defined routing options(also referred to herein as parameters) with respect to defined CRM dataobjects. A user can select a routing option, and in response, therouting system performs a data dip (e.g., accesses CRM data) thatprovides available agents and/or ring groups associated with the dataobject. For example, a data object in the CRM system can represent acase, a lead owner, a contact owner, an account owner, or any other typeof customer relationship defined within a CRM system.

Once the intelligent routing interface collects the routing option andthe CRM data, the routing system sends this information to thecommunication management system (e.g., via an API) to set up the routingwithin the communication management system. In one or more embodiments,the routing system includes a state machine within the communicationmanagement system. The state machine saves the current and activerouting flows that are used by the communication management system toroute contacts (e.g., calls, IM, text messages, etc.). In addition, thestate machine ensures that there are no conflicting routing flows.Accordingly, upon the routing system providing the routing parametersand CRM data to the communication management system, and the routingsystem updates the state machine and/or activates the routing flowdefined at the CRM, as described above. At this point, the routing flowis active and when the contacting user communicates with thecommunication management system, the communication management systemdetects the contacting user (e.g., detects the phone number), accessesthe routing flow defined for the contacting user within the statemachine, and routes the call accordingly.

Based on the above principles and the below disclosed details, therouting system described herein provides various advantages compared toconventional systems. For instance, the routing system streamlinesrouting configuration into seconds (instead of days or weeks) with aguided workflow that exposes CRM objects with available agent numbersand agent ring groups. The guided workflow provides a unique graphicaluser interface that allows a user to set a routing flow in an efficientmanner and by reducing the number of interactions needed to generate aflow and access data to activate the flow (e.g., a data dip) compared toconventional systems. In addition, the routing system automaticallyimports agent numbers and ring groups into the communication managementsystem routing platform saving time and increasing efficiency of therouting system. Furthermore, the routing system allows routing to beconfigured by CRM object view recency and/or view frequency, thuscreating the most effective routing flow for a specific contacting user.Moreover, the routing system allows routing to easily be defined byif/then logic in a step-by-step guided process that is completed with afew user selections, compared to custom coding that is required inconventional systems. Additionally, the state machine ensures that thereare no routing conflicts when a user creates or updates a routing flow.

As illustrated by the foregoing discussion, the present disclosureutilizes a variety of terms to describe features and benefits of thecommunication management system. Additional detail is hereafter providedregarding the meaning of these terms as used in this disclosure. Inparticular, the term “contacting user” refers to a user that contactsthe communication management system. A contacting user can refer to auser that is experiencing a problem or issue with a service system andthat contacts the communication management system in an attempt toresolve the problem or to inform others of the problem. For example, acontacting user can include a caller, a chat user, or a text messageuser that sends an electronic communication to the communicationmanagement system. The term “communication” refers to a communicationsuch as a phone call, chat message, text message, instant message, orvideo call that the communication management system can receive from acontacting user.

Relatedly, the term “agent user” or “agent” refers to an individual orsystem associated with the communication management system or a servicesystem and that assists a contacting user via electronic communicationcorrespondence. Indeed, the communication management system can connecta contacting user who needs to reschedule a flight with an agent useraffiliated with the relevant airline system.

The term “CRM data object” or “CRM object” refers to a data structurethat is referenced by an identifier. For instance, CRM objects includedata structures that define an association between data and a databaseentity within a CRM system. For instance, a CRM object can represent acase that has a case owner within the CRM system, a lead that has a leadowner, a contact that has a contact owner or agent, an account that hasan account owner, or any other type of customer-relationship that isdefined within a CRM system. In one or more embodiments, the CRM objectis associated with an agent, multiple agents, a ring group (e.g., agroup of agents associated with a particular team, customer servicespecialty, contact, account, etc.) and numbers or identifiers associatedwith the agent or ring groups.

As used herein, the term “routing flow” refers to a road map of how acontact (e.g., a call) from a contacting user is routed within acommunication management system. For example, upon receiving a call, thecommunication management system can identify the phone number and accessthe routing flow for that phone number. The routing flow can specify tofirst attempt to contact a particular agent phone number if available,but if that agent is not available, then the routing flow can specify tocontact one of a number of agents within a specified ring group. Thus,the routing flow defines a priority of agents and/or ring groups towhere the call should be routed.

Additional detail regarding the communication management system will nowbe provided with reference to the figures. For example, FIG. 1illustrates a schematic diagram of an example environment forimplementing a routing system in accordance with one or moreembodiments. An overview of the routing system is described in relationto FIG. 1. Thereafter, a more detailed description of the components andprocesses of the communication management system is provided in relationto the subsequent figures.

As shown in FIG. 1, the routing system includes server(s) 115 a hostinga communication management system 125, server(s) 115 b hosting a CRMsystem 135, a subscriber system 145, an administrator device 110 b, anagent device 110 c, a contacting user device 110 a, and a network 190.Each of the components of the environment can communicate via thenetwork 190, and the network 190 may be any suitable network over whichcomputing devices can communicate.

As mentioned, the routing system can include different client devices110 such as a contacting user device 110 a, an administrator device 110b, and an agent device 110 c. The contacting user device 110 a can beone of a variety of computing devices, including a smartphone, tablet,smart television, desktop computer, laptop computer, virtual realitydevice, augmented reality device, or other computing device as describedin relation to FIG. 13. Although FIG. 1 illustrates a single contactinguser device 110 a, in some embodiments the environment can includemultiple different contacting user devices 110 a, each associated with adifferent contacting user. The contacting user device 110 a can receiveuser input and other information and provide the information (includingcommunication dialogue and contacting user information) to theserver(s).

As shown, the contacting user device 110 a includes a contacting userapplication 155. In particular, the contacting user application 155 maybe a web application, a native application installed on the contactinguser device 110 a (e.g., a mobile application, a desktop application,etc.), or a cloud-based application where part of the functionality isperformed by the server(s) 115. The contacting user application 155 canpresent or display information to a contacting user, includinginformation relating to EWT options for processing an electroniccommunication to help a contacting user accomplish a desired purpose. Acontacting user can interact with the contacting user application 155 toprovide user input to, for example, select an EWT option for processingan electronic communication or provide communication dialogue.

As also mentioned, the routing system includes an administrator device110 b and an agent device 110 c. Like the contacting user device 110 a,the administrator device 110 b and agent device 110 c can be a one of avariety of computing devices, including a smartphone, tablet, smarttelevision, desktop computer, laptop computer, virtual reality device,augmented reality device, or other computing device as described inrelation to FIG. 13. Although FIG. 1 illustrates a single agent device110 c, in some embodiments the environment can include multipledifferent agent devices 110 c, each associated with a different agentuser. The agent device 110 c can receive user input from an agent userand receive information (including communication dialogue, contactinguser information, a purpose prediction, and/or an agent transcript) fromthe server(s) 115.

As shown, the administrator device 110 b and agent device 110 c includea client application 113 (i.e., the client applications 113 a and 113b). In particular, the client application 113 may be a web application,a native application installed on the administrator device 110 b oragent device 110 c (e.g., a mobile application, a desktop application,etc.), or a cloud-based application where part of the functionality isperformed by the server(s). The client application 113 can present ordisplay information to an administrator or agent user, including a userinterface for interacting with a contacting user and presentinginformation pertaining to the contacting user (e.g., contextualinformation, an agent transcript, etc.). An agent user can interact withthe client application 113 to, for example, help a contacting user witha customer service issue. In addition, the administrator can interactwith the client application 113 to define EWT points, options, andbehavior as described herein.

As illustrated in FIG. 1, the routing system includes a subscribersystem 145. The subscriber system 145 may be a service system or adifferent customer support system. For example, the subscriber system145 may be a service system that is currently experiencing or exhibitinga problem feature relevant to a contacting user. As another example, thesubscriber system 145 may be a service system that is not currentlyexperiencing a problem feature but that a contacting user needs tocontact to resolve an issue stemming from a problem feature of adifferent service system—e.g., an airline system that a contacting usercalls to reschedule a flight due to being stuck in traffic. In someembodiments, as indicated by the dashed box of FIG. 1, the agent device110 c is associated or affiliated with the subscriber system 145. Inthese embodiments, the communication management system 125 may provideinformation such as an electronic communication and contacting userinformation to the subscriber system 145, whereupon the subscribersystem 145 may assign or relay the electronic communication to an agentdevice 110 c. In other embodiments, the agent device 110 c is notdirectly associated with the subscriber system 145, and thecommunication management system 125 provides information to the agentdevice 110 c without necessarily utilizing the subscriber system 145.

As further illustrated in FIG. 1, the routing system includes theserver(s) 115 a hosting the communication management system 125. Thecommunication management system 145 (e.g., a contact center) maygenerate, store, process, receive, and transmit electronic data, such aselectronic communications, communication dialogue, contacting userinformation, contextual information, etc. For example, the server(s) 115a may receive data from the contacting user device 110 a in the form ofan electronic communication and contacting user information. Inaddition, the server(s) 115 a can transmit data to the agent device 110c to provide the electronic communication and contacting userinformation. The server(s) 115 a can communicate with the contactinguser device 110 a, the agent device 110 c, the administrator device 110b, the CRM system 135, and the subscriber system 145 to transmit and/orreceive data via the network 190. In some embodiments, the server(s) 115a comprises an application server, a communication server, a web-hostingserver, a social networking server, a digital content campaign server,or a digital content management server. Although FIG. 1 depicts thecommunication management system 125 located on the server(s) 115 a insome embodiments, the communication management system 125 may beimplemented by (e.g., located entirely or in part) on one or more othercomponents of the environment. For example, the communication managementsystem 125 may be implemented by the contacting user device 110 a, theagent device 110 c, and/or the subscriber system 145.

Additionally, and as shown in FIG. 1, the routing system includes aserver(s) 115 b hosting a CRM system 135. The CRM system 135(customer-relationship management system) can compile data from a rangeof different communication channels, including a company's website,email, and social media. In addition, the CRM system 135 can compile anduse data from the communication management system 125, such as data fromphone calls, text messages, IMs, email, or other contacting usercommunications.

In some embodiments, though not illustrated in FIG. 1, the routingsystem may have a different arrangement of components and/or may have adifferent number or set of components altogether. For example, thecontacting user device 110 a, the agent device 110 c, the administratordevice 110 b, the CRM system 135, and the subscriber system 145 maycommunicate directly with the communication management system 125,bypassing the network 190. The communication management system 125 canbe implemented in a variety of different ways across the server(s) 115,the network 190, the agent device 110 c, the contacting user device 110a, and the subscriber system 145. Additional detail regardingimplementing different components of the communication management system125 across devices is provided below.

As mentioned above, the routing system can provide an intelligentrouting interface within the CRM system 135 that a user can setuprouting (e.g., call routing) within the communication management system125 (e.g., contact center) using data within the CRM system 135. To thatend, FIG. 2 illustrates an example routing system that includes thecommunication management system 125, the CRM system 135, and anadministrator and/or agent device 110. As shown in FIG. 2, the CRMsystem 135 includes an intelligent routing interface 235 that theadministrator and/or agent device 110 can access to define routing flowsthat are then synchronized to the communication management system 125.For example, the intelligent routing interface 235 can include acommunication management system interaction API 237 to allow the CRMsystem 135 to package a routing flow and communicate the routing flow tothe communication management system 125.

For example, an agent, via the agent device 110 c, can access agraphical user interface for the intelligent routing interface 235 thatallows the agent to select a routing flow for a contacting user based ona particular CRM object (with associated CRM data). Based on theselection, the intelligent routing interface 235 performs a data dip, orotherwise access CRM data associated with the particular CRM object froma CRM database 239. The intelligent routing interface 235 generates arouting data package 250 that includes the contacting user information,the routing flow definitions, and the CRM data (e.g., names and contactinformation of agents and/or ring groups) and sends the package usingthe interaction API to communication management system 125.

As further shown in FIG. 2, the communication management system 125includes a routing platform 225 that has a routing state machine 227 anda contact router 229. Upon receiving the routing data package 250, therouting platform 225 updates the routing state machine 227 based on therouting data within the routing data package 250. The routing statemachine 227 keeps the routing configurations current without conflict.Thus, after performing a conflict check to ensure there is not already arouting record associated with the contacting user, the routing statemachine 227 activates the routing flow within the routing state machine227. Once activated, the communication management system 125 uses thecontact router 229 within the routing platform 225 to route any futurecommunication from the contacting user per the routing flow definedabove using the intelligent routing interface within the CRM system 135.

FIGS. 3A-3F illustrate example graphical user interfaces that therouting system provides through the intelligent routing interface withinthe CRM system, described above with respect to FIG. 2. The graphicaluser interfaces illustrate selectable options that an agent oradministrator can select via the agent/administrator device to define arouting flow for a contacting user. As shown in FIG. 3A, the routingsystem provides a graphical user interface that includes a list ofrouting configurations 305 (e.g., routing flows 305). As illustrated,each of the routing configurations 305 is based on a different CRMobject within the CRM system. For example, the listed routingconfigurations include a routing configuration 305 a “Route to caseowner,” a routing configuration 305 b “Route to lead owner,” a routingconfiguration 305 c “Route to contact owner,” and a routingconfiguration 305 d “Route to account owner.” The terms “case owner,”“lead owner,” “contact owner,” and “account owner” are all differenttypes of CRM objects that are associated with different CRM data withinthe CRM database 239. For example, the case owner is a CRM object thatis associated with an agent is that assigned to a particular case withinthe CRM system 135. The CRM object for the case owner is furtherassociated with the agent's phone number extension, chat handle, orother contacting information. Moreover, the CRM object of the case mayalso be associated with ring group (a group of agents and their contactinformation) that are assigned to a department associated with the case.Thus, by using the CRM object to create a data flow, the routing systemcan perform a data dip into the CRM database 239 to easily and quicklygather the data needed to setup a routing configuration in just a matterof seconds, as will be further explained as we continue through thefigures.

For instance, FIG. 3B illustrates that the agent selects the routingconfiguration 305 a “Route to case owner.” Upon making the selection,the routing system updates the GUI to show a preconfigured routing flowthat is defined for the “Route to case owner” scenario. As shown, thepreconfigured routing flow provides a series of if statements that areexecuted in order to route a communication from the contacting user. Asillustrated, in the “Route to case owner” scenario, the contact router229 (see FIG. 2) would first “select the most recent case from the last7 days” associated with the contacting user and then route to the caseowner associated with that case. Then, and as further illustrated, “ifthe case owner is found but unavailable or no case is found, route toAgents.”

As illustrated in FIG. 3B, each of the underlined words are selectablelinks that allows an agent/administrator to update the definitions ofthe flow. For example, instead of “most recent” case, theagent/administrator can select “any case.” Or, instead of the timeperiod of the “last 7 days” the agent/administer can change that to thelast month, quarter, year, or any other time period. Similarly, theagent/administrator can define the status of the case and/or thepriority of the case, as illustrated in FIG. 3B. Finally, the second ifstatement allows the agent/administrator to define where thecommunication should go if the case owner is not available or if nomatching case is found. For example, the communication can be generallyrouted to any agent, or it could be routed to a specific ring group orspecific agent.

Once the routing configuration is defined, the routing system providesan interface to assign contacting users to the routing configuration. Asshown in FIG. 3C, the routing system can provide a list of phone numbersthat are not assigned to the routing configuration, allow theagent/admin to select one or more numbers associated with contactingusers, and move the numbers from the “deselected number” box to the“selected number” box by selecting the arrow as shown in FIG. 3D. Oncethe agent/admin selects one or more numbers, the routing system updatesthe GUI to include an “Activate Routing” option 309. Upon selection ofthis option 309, the routing system further provides a confirmation page311 that summarizes the routing configuration and provides an option toconfirm and activate the routing configuration, as illustrated in FIG.3F.

Upon selection of the “Activate Routing” option 313 on the confirmationscreen 311, the routing system causes the intelligent routing interface235 to perform a data dip into the CRM database 239 based on the CRMobject of case owner to access and collect the needed agent informationfor the routing configuration. The intelligent routing interface 235then generates a data package with the routing configuration and relatedCRM data (agent information) and sends the data package 250 to thecommunication management system 125 to update the routing state machine227 in the routing platform 225, as described above with respect to FIG.2.

FIGS. 4A-4E illustrate another example of the routing system generatinga routing flow or routing configuration based on another type of CRMobject. As shown in FIG. 4A-4B, the agent/admin can select the routingconfiguration 305 c of “Route to contact owner.” Again, based on theselection the routing system provides an updated GUI that shows apreconfigured routing configuration that, in this case, comprises threeif statements to be performed in succession. For instance, thepreconfigured flow first checks to see if there are duplicate contacts,and if so, selects the most recent contact and then routes the call tothe contact owner associated with that contact. Again, the “most recent”setting can be changed by the agent/admin selecting the most recentterms within the GUI. Next, the routing configuration defines that ifthe contact owner is not available, then to route to “agents,” where thegroup of agents can be defined. Finally, the routing configurationindicates that if no contact owner is found, the continue with a regularor default call flow. As explained with respect to FIGS. 3C-3F, FIGS.4C-4E allows the agent/admin to select contacting users (e.g., phonenumbers) to assign to the routing configuration and activate the routingconfiguration by sending a routing package 250 to the communicationmanagement system 125 as described above.

FIG. 5 illustrates a user flow for enabling custom flow using CRM datadip as described above. For purposes of explanation, the T4SF indicatesthe intelligent routing interface within the CRM system. As illustrated,in some embodiments there can be multiple paths for an agent/admin toset up a routing flow. In a first path 503 a, the user selects theintelligent routing interface as shown above with respect to FIGS.3A-4E. Following that path the agent/admin selects a routingconfiguration option, and then, configures data dip parameters that aredependent on the selected routing configuration. The agent/admin thensaves configuration to be used in the data dip and proceeds to assignnumbers and active custom flow for the assigned numbers.

On a second path 503 b, an admin may select under a preferences menu anoption to configure intelligent routing. At this phase, the intelligentrouting interface determines if there is already a configured data dip.If there is no configured data dip, then the user flow progresses to thenormal setup described in the preceding paragraph. If there is aconfigured data dip, then the admin can proceed directly to enabling theintelligent routing for the account, assigning specific numbers tofollow the custom flow, and save changes to activate the flow.

FIG. 6 illustrates a user flow for editing or deactivating a custom flowusing CRM data dip as described above. In one user flow 603 a, theadmin/agent may attempt to create a routing flow for a contact that isalready assigned to a routing flow. In this case, the intelligentrouting system provides a warning that the requested changes affectpreviously assigned numbers. After confirming the change, theintelligent routing interface sends a routing package to thecommunication management system and the state machine is updated withthe most recent flow for the contacting user. The routing system canprovide a similar flow 603 b, but from a different entry point. Forexample, the routing system can cause the intelligent routing interfaceto provide contacting user numbers that have an existing routing flow.The intelligent routing interface can then provide options for editingthe routing flow, including providing warnings or messages to avoidconflicts. In addition, the intelligent routing interface can provide aflow 603 c option to deactivate a routing flow and return to the lastsaved legacy settings or account default.

FIGS. 7-9 illustrate the interaction between the intelligent routinginterface within the CRM system and the state machine within thecommunication management system that the routing system utilizes toensure the routing flows within the CRM system and the communicationmanagement system are synchronized. In general, there are two states fora routing configuration: draft or active (e.g., published). As shown inFIG. 7, initially at 701 no flow configurations exist. However, therouting system can allow an admin/agent to draft a routing flow (asdescried above), and as shown in 702. The draft phase allows theadmin/agent to review and customize parameters of a routing flow beforemaking it active. Once the admin/agent is satisfied with the routingflow parameters, the admin/agent can activate the routing flow, or inother words, publish the routing flow as illustrated in 703. Oncepublished, the routing flow is listed as active within the state machinein the communication management system. As FIG. 7 further indicates, anadmin/agent can edit a published routing flow to create a publisheddraft at 704, and then re-publish to update the routing flow at 705.Note, the routing flow can be edited on via the intelligent routinginterface within the CRM system or from within a routing configurationinterface within the contact management system. The draft/activate orpublish system ensures that there never is a conflicting routingconfiguration for a particular contacting user because the draftingphase allows for editing and changing of parameters on one systemwithout activating those parameters until the admin/agent selects theoption to activate, thereby updating the state machine in thecommunication management system.

FIG. 8 illustrates the various routing configurations (e.g., other1,other2, other 3, other4, and other5) as described above with respect toFIGS. 3A-4E. As shown, the other2 illustrates the routing flow isactivated based on case owner, other3 indicates that the routing flow isactivated based on lead owner, other4 indicates that the routing flow isactivated based on contact owner, and other5 indicates that the routingflow is activated based on account owner. Only one type of routing flowcan be activated at a time, with all other types of routing flowsindicated in “draft,” which means they are deactivated. Further, FIG. 8illustrates other1 that shows that a routing configuration can bedeactivated by changing all routing flow types to draft.

FIG. 9 illustrates the various routing configurations (e.g., other1,other2, other 3, other4, and other5) as described above with respect toFIGS. 3A-4E, but further illustrates how the user can create and/or editrouting flows within the CRM system (draftintelligentrouting) or withinthe communication management system (draftinTalkdesk). Accordingly, therouting system allows admins/agents to create and edit routing flowswithin the CRM system easily and efficiently and with ensuring that therouting flows in the CRM system do not conflict with the routing flowsdefined in the communication management system.

FIG. 10 is an illustration of an example method 1000 for updating arouting state machine and for routing a communication using the routingstate machine. The method 1000 may be implemented by one or more of aCRM system or a communication management system.

At 1005, a routing interface is provided. The routing interface 235 maybe provided by the CRM system 135. The routing interface 235 may allow auser to define routing parameters for a communication from a contactinguser.

At 1010, CRM data is accessed based on the routing parameters. The CRMdata may be accessed by the CRM system 135 from the CRM database 239.The CRM data may include agent numbers and ring groups.

At 1015, a routing data package is generated. The routing package 259may be generated by the CRM system 135. The routing data package 250 maybe generated by the CRM system 135 from the routing parameters.

At 1020, the routing data package is provided. The routing data packagemay be provided by the CRM system 135 to the communication managementsystem 125 through the network 109.

At 1025, the communication management system is caused to update arouting state machine. The communication management system 125 may becaused to update the routing state machine 227 by the CRM system 135.

At 1030, a communication is received from the contacting user. Thecommunication may be received by the communication management system125.

At 1035, the communication is routed according to the routing statemachine. The communication may be routed by the communication managementsystem 125 using the routing state machine 227.

FIG. 11 is an illustration of an example method 1100 for receiving acommunication and for routing the communication using the routing statemachine. The method 1100 may be implemented by a communicationmanagement system.

At 1105, a communication is received from a contacting user. Thecommunication may be received by the communication management system125. The communication may be a call, text, email, etc.

At 1110, the contacting user associated with the communication may bedetected. The contacting user may be detected by the communicationmanagement system 125. For example, if the communication is a call, thecommunication management system 125 may determine the contacting user bymatching the phone number of the call to the contacting user.

At 1115, a routing flow defined for the contacting user is determined.The routing flow may be determined by the communication managementsystem 125. The routing flow may identify one or more agent numbers orring groups, for example. The routing flow may be part of a routingstate machine.

At 1120, the communication is routed based on the routing flow. Thecommunication may be routed by the communication management system 125to the agent or ring group identified by the routing flow.

FIG. 12 is an illustration of an example method 1200 for generating arouting data package. The method 1200 may be implemented by a CRMsystem.

At 1205, a plurality of routing options is displayed for a data object.The plurality of data objects may be displayed to an administrator in aintelligent routing interface 235 by the CRM system 135. The data objectmay be a customer relationship defined in the CRM system 135 such as acustomer or contact.

At 1210, a selection of a routing option of the plurality or routingoptions is received. The selection may be received by the CRM system 135through the intelligent routing interface 235.

At 1215, a routing data package is generated. The routing data packageis generated by the CRM system 135 based on the selected routing option.

At 1220, the generated routing data package is provided. The routingdata package 250 may be provided by the CRM system 135 to thecommunication management system 125 through the network 190.

FIG. 13 shows an exemplary computing environment in which exampleembodiments and aspects may be implemented. The computing systemenvironment is only one example of a suitable computing environment andis not intended to suggest any limitation as to the scope of use orfunctionality.

Numerous other general purpose or special purpose computing systemenvironments or configurations may be used. Examples of well-knowncomputing systems, environments, and/or configurations that may besuitable for use include, but are not limited to, personal computers,servers, handheld or laptop devices, multiprocessor systems,microprocessor-based systems, network personal computers (PCs),minicomputers, mainframe computers, embedded systems, distributedcomputing environments that include any of the above systems or devices,and the like.

Computer-executable instructions, such as program modules, beingexecuted by a computer may be used. Generally, program modules includeroutines, programs, objects, components, data structures, etc. thatperform particular tasks or implement particular abstract data types.Distributed computing environments may be used where tasks are performedby remote processing devices that are linked through a communicationsnetwork or other data transmission medium. In a distributed computingenvironment, program modules and other data may be located in both localand remote computer storage media including memory storage devices.

With reference to FIG. 13, an exemplary system for implementing aspectsdescribed herein includes a computing device, such as computing device1300. In its most basic configuration, computing device 1300 typicallyincludes at least one processing unit 1302 and memory 1304. Depending onthe exact configuration and type of computing device, memory 204 may bevolatile (such as random access memory (RAM)), non-volatile (such asread-only memory (ROM), flash memory, etc.), or some combination of thetwo. This most basic configuration is illustrated in FIG. 13 by dashedline 1306.

Computing device 1300 may have additional features/functionality. Forexample, computing device 1300 may include additional storage (removableand/or non-removable) including, but not limited to, magnetic or opticaldisks or tape. Such additional storage is illustrated in FIG. 13 byremovable storage 1308 and non-removable storage 1310.

Computing device 1300 typically includes a variety of tangible computerreadable media. Computer readable media can be any available tangiblemedia that can be accessed by device 1300 and includes both volatile andnon-volatile media, removable and non-removable media.

Tangible computer storage media include volatile and non-volatile, andremovable and non-removable media implemented in any method ortechnology for storage of information such as computer readableinstructions, data structures, program modules or other data. Memory1304, removable storage 1308, and non-removable storage 1310 are allexamples of computer storage media. Tangible computer storage mediainclude, but are not limited to, RAM, ROM, electrically erasable programread-only memory (EEPROM), flash memory or other memory technology,CD-ROM, digital versatile disks (DVD) or other optical storage, magneticcassettes, magnetic tape, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to store thedesired information and which can be accessed by computing device 1300.Any such computer storage media may be part of computing device 1300.

Computing device 1300 may contain communications connection(s) 1312 thatallow the device to communicate with other devices. Computing device1300 may also have input device(s) 1314 such as a keyboard, mouse, pen,voice input device, touch input device, etc. Output device(s) 1316 suchas a display, speakers, printer, etc. may also be included. All thesedevices are well known in the art and need not be discussed at lengthhere.

It should be understood that the various techniques described herein maybe implemented in connection with hardware or software or, whereappropriate, with a combination of both. Thus, the methods and apparatusof the presently disclosed subject matter, or certain aspects orportions thereof, may take the form of program code (i.e., instructions)embodied in tangible media, such as floppy diskettes, CD-ROMs, harddrives, or any other machine-readable storage medium wherein, when theprogram code is loaded into and executed by a machine, such as acomputer, the machine becomes an apparatus for practicing the presentlydisclosed subject matter. In the case of program code execution onprogrammable computers, the computing device generally includes aprocessor, a storage medium readable by the processor (includingvolatile and non-volatile memory and/or storage elements), at least oneinput device, and at least one output device. One or more programs mayimplement or utilize the processes described in connection with thepresently disclosed subject matter, e.g., through the use of anapplication programming interface (API), reusable controls, or the like.Such programs may be implemented in a high level procedural orobject-oriented programming language to communicate with a computersystem. However, the program(s) can be implemented in assembly ormachine language, if desired. In any case, the language may be acompiled or interpreted language and it may be combined with hardwareimplementations.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed at a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed on ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. In this description, “cloud computing” isdefined as a model for enabling on-demand network access to a sharedpool of configurable computing resources. For example, cloud computingcan be employed in the marketplace to offer ubiquitous and convenienton-demand access to the shared pool of configurable computing resources.The shared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Call Center as a Service (CCaaS), Software as a Service(“SaaS”), Platform as a Service (“PaaS”), and Infrastructure as aService (“IaaS”). A cloud-computing model can also be deployed usingdifferent deployment models such as private cloud, community cloud,public cloud, hybrid cloud, and so forth. In this description and in theclaims, a “cloud-computing environment” is an environment in which cloudcomputing is employed.

1. A method comprising: receiving, in a customer-relationship management(CRM) system from a communication management system, a communicationfrom a contacting user; detecting, in the CRM system, the contactinguser based on the communication by the communication management system;determining, in the CRM system, a routing flow defined for thecontacting user by the communication management system; and providing,from the CRM system to the communication management system, routinginformation for the communication based on the routing flow, wherein therouting information comprises a series of if statements to route thecommunication from the contacting user.
 2. The method of claim 1,wherein the communication comprises one or more of a telephone call, anemail, or a text message.
 3. The method of claim 1, wherein routing thecommunication based on the routing flow comprises causing a statemachine to route the communication based on the routing flow.
 4. Themethod of claim 3, wherein the routing flow identifies one or more of anagent or a ring group.
 5. The method of claim 4, wherein routing thecommunication based on the routing flow comprises routing thecommunication to the identified agent or ring group.
 6. The method ofclaim 1, further comprising: receiving a routing data package for thecontacting user, wherein the routing data package comprises routingparameters and the CRM data; and updating the routing flow for thecontacting user based on the routing data package.
 7. The method ofclaim 6, wherein updating the routing flow comprises updating a statemachine.
 8. A system comprising: at least one processor; and at leastone non-transitory computer-readable storage medium storing instructionsthat, when executed by the at least one processor, cause the system to:receive, in a customer-relationship management (CRM) system from acommunication management system, a communication from a contacting user;detect, in the CRM system, the contacting user based on thecommunication; determine, in the CRM system, a routing flow defined forthe contacting user; and providing, from the CRM system to thecommunication management system, information for routing thecommunication based on the routing flow, wherein the routing informationcomprises a series of if statements to route the communication from thecontacting user.
 9. The system of claim 8, wherein the communicationcomprises one or more of a telephone call, an email, or a text message.10. The system of claim 8, wherein routing the communication based onthe routing flow comprises causing a state machine to route thecommunication based on the routing flow.
 11. The system of claim 10,wherein the routing flow identifies one or more of an agent or a ringgroup.
 12. The system of claim 11, wherein routing the communicationbased on the routing flow comprises routing the communication to theidentified agent or ring group.
 13. The system of claim 8, furthercomprising instructions that, when executed by the at least oneprocessor, cause the system to: receive a routing data package for thecontacting user, wherein the routing data package comprises routingparameters and the CRM data; and update the routing flow for thecontacting user based on the routing data package.
 14. The system ofclaim 13, wherein updating the routing flow comprises updating a statemachine.
 15. A non-transitory computer-readable medium storinginstructions that, when executed by at least one processor, cause acustomer-relationship management (CRM) system to: receive, from acommunication management system, a communication from a contacting user;detect, in the CRM system, the contacting user based on thecommunication; determine, in the CRM system, a routing flow defined forthe contacting user; and provide to the communication management systeminformation for routing the communication based on the routing flow,wherein the routing information comprises a series of if statements toroute the communication from the contacting user.
 16. Thecomputer-readable medium of claim 15, wherein the communicationcomprises one or more of a telephone call, an email, or a text message.17. The computer-readable medium of claim 15, wherein routing thecommunication based on the routing flow comprises causing a statemachine to route the communication based on the routing flow.
 18. Thecomputer-readable medium of claim 17, wherein the routing flowidentifies one or more of an agent or a ring group.
 19. Thecomputer-readable medium of claim 18, wherein routing the communicationbased on the routing flow comprises routing the communication to theidentified agent or ring group.
 20. The computer-readable medium ofclaim 15, further comprising instructions that, when executed by the atleast one processor, cause the computer system to: receive a routingdata package for the contacting user, wherein the routing data packagecomprises routing parameters and the CRM data; and update the routingflow for the contacting user based on the routing data package.